
let reg = /^svgNode/;

// 事件代理方式监测哪个元素被单击，如果insertChild元素在之后被单击，创建下级节点
svg.addEventListener("click", function (e) {
    let event = e || window.event;
    let className = event.target.getAttribute("class");
    if (reg.test(className)) {//如果为true，说明触发click事件的元素是text或者rect
        //监控insertChild的单击事件
        eventClassName = className;
        for (let i = 0; i < nodeArr.length; i++) {
            if (nodeArr[i].data.id == eventClassName) {
                // 在parentNode改变之前，parentNode如果存在的话，
                // 实际上指向的是上一个被点击的svg元素，
                // 点击document的空白元素，应该将parentNode的ouline以及对应的textEditEle消失
                if (parentNode) {
                    parentNode.tempData.rectEle.setAttribute("stroke", "none");
                    textEditEle.style.display = "none";
                }
                parentNode = nodeArr[i];//查找这个text和rect组合对应的node
                // 更新document的click事件的元素，这个元素，实际上是触发click事件的元素
                // 更新数据
                node = parentNode;
                textEle = parentNode.tempData.textEle;
                rectEle = parentNode.tempData.rectEle;
                break;
            }
        }


    }
}, true);//因为前面设置了在冒泡阶段阻止click事件传播，因此此处在捕获阶段执行事件


// 插入下级节点
let insertChild = document.getElementById("insert-child");
insertChild.addEventListener("click", function () {
    if (eventClassName) {//说明有一个svg元素被选中
        // 创建新节点
        let nowNode = new MindNode(parentNode.root);
        nowNode.parent = parentNode;
        if (parentNode.isRoot()) {
            nowNode.data.type = "main";
        } else {
            nowNode.data.type = "sub";
        }
        nowNode.data.id = "svgNode" + idContainer.svgNode++;
        nodeArr.push(nowNode);

        // 画出新节点对应的图形
        res = createNodeEle(nowNode, parentNode, "insertChild");
        eventClassName = nowNode.tempData.g.id;

        // 设置样式：新生成元素的outline出现，textarea出现
        // 父元素的outline消失
        parentNode.tempData.rectEle.setAttribute("stroke", "none");
        setStyle(nowNode.tempData.rectEle, textEditEle, nowNode.tempData.textEle, nowNode);
        nowNode.data.flag = true;

        parentNode = nowNode;

        node = nowNode;
        textEle = nowNode.tempData.textEle;
        rectEle = nowNode.tempData.rectEle;
    }
});


// 插入上级节点，只是节点后面的子树水平位置移动，根节点不具有这个功能
let insertUpper = document.getElementById("insert-upper");
insertUpper.addEventListener("click", function () {
    if (eventClassName && eventClassName !== "svgNode0") {//说明有一个svg元素被选中，且该元素不是根节点
        // 创建新节点
        let nowNode = new MindNode(parentNode.root);
        // 新节点父节点是选中的节点的父节点
        nowNode.parent = parentNode.parent;

        let parentSilbing = parentNode.parent.children;
        let index = parentSilbing.indexOf(parentNode);
        parentSilbing.splice(index, 1, nowNode);

        // 选中的节点的父节点是新节点
        parentNode.parent = nowNode;
        nowNode.children.push(parentNode);

        if (parentNode.data.type == "main") {//设置节点类型
            nowNode.data.type = "main";
        } else {
            nowNode.data.type = "sub";
        }

        nowNode.data.id = "svgNode" + idContainer.svgNode++;
        nodeArr.push(nowNode);

        // 画出新节点对应的图形
        res = createNodeEle(nowNode, parentNode, "insertUpper");
        eventClassName = nowNode.tempData.g.id;

        // 设置样式：新生成元素的outline出现，textarea出现
        // 父元素的outline消失
        parentNode.tempData.rectEle.setAttribute("stroke", "none");
        setStyle(nowNode.tempData.rectEle, textEditEle, nowNode.tempData.textEle, nowNode);
        nowNode.data.flag = true;

        parentNode = nowNode;

        node = nowNode;
        textEle = nowNode.tempData.textEle;
        rectEle = nowNode.tempData.rectEle;
    }
});

let turnUserInfo = document.getElementById("turnUserInfo");
turnUserInfo.addEventListener("click",turnUserInfos);
function turnUserInfos(){
    // 获取页面尺寸，用于判断是移动端还是PC端
    let pageWidth = document.body.clientWidth;
    // 根据响应式布局分别跳转
    if (pageWidth >= 768) {
        location.href = "/view/other/modifyName.html";
    }else{
        location.href = "/view/other/userInfo.html";
    }
}
// 插入同级节点，类似插入下级节点

// 删除节点







